package com.exahq.util;

import java.security.SecureRandom;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * @description:
 * @author: lhq
 * @time: 2021/3/2 18:51
 */

public class IdCode {

    private static final String SYMBOLS = "0123456789"; // 数字
    private static final Random RANDOM = new SecureRandom();
    /**
     * 省份证的正则表达式^(\d{15}|\d{17}[\dx])$
     * @param id    省份证号
     * @return    生日（yyyy-MM-dd）
     */
    public static Date extractYearMonthDayOfIdCard(String id) {
        String year = null;
        String month = null;
        String day = null;
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");//定义一个时间转换格式“年-月-日”
        Date date = null;
        //正则匹配身份证号是否是正确的，15位或者17位数字+数字/x/X
        if (id.matches("^\\d{15}|\\d{17}[\\dxX]$")) {
            year = id.substring(6, 10);
            month = id.substring(10,12);
            day = id.substring(12,14);
        }else {
            System.out.println("身份证号码不匹配！");
            return null;
        }
        try {     //捕获类型转换（解析）异常
            String birthday =year + "-" + month + "-" + day;
            date = fmt.parse(birthday);

        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }


    /**
     * 验证码
     * 获取长度为 6 的随机数字
     * @return 随机数字
     *
     */
    public static String getNonce_str() {
        // 如果需要4位，那 new char[4] 即可，其他位数同理可得
        char[] nonceChars = new char[6];

        for (int index = 0; index < nonceChars.length; ++index) {
            nonceChars[index] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
        }

        return new String(nonceChars);
    }

}
